home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / devel / tcl / tclx7_31.z / tclx7_31 / tcldev / tclX7.3a-p1 / tclsrc / showproc.tcl < prev    next >
Encoding:
Text File  |  1993-11-19  |  1.5 KB  |  45 lines

  1. #
  2. # showproc.tcl --
  3. #
  4. # Display procedure headers and bodies.
  5. #------------------------------------------------------------------------------
  6. # Copyright 1992-1993 Karl Lehenbauer and Mark Diekhans.
  7. #
  8. # Permission to use, copy, modify, and distribute this software and its
  9. # documentation for any purpose and without fee is hereby granted, provided
  10. # that the above copyright notice appear in all copies.  Karl Lehenbauer and
  11. # Mark Diekhans make no representations about the suitability of this
  12. # software for any purpose.  It is provided "as is" without express or
  13. # implied warranty.
  14. #------------------------------------------------------------------------------
  15. # $Id: showproc.tcl,v 3.0 1993/11/19 07:00:19 markd Rel $
  16. #------------------------------------------------------------------------------
  17. #
  18.  
  19. #@package: TclX-showproc showproc
  20.  
  21. proc showproc args {
  22.     if [lempty $args] {
  23.         set args [info procs]
  24.     }
  25.     set out {}
  26.  
  27.     foreach procname $args {
  28.         if [lempty [info procs $procname]] {
  29.             auto_load $procname
  30.         }
  31.         set arglist [info args $procname]
  32.         set nargs {}
  33.         while {[llength $arglist] > 0} {
  34.             set varg [lvarpop arglist 0]
  35.             if [info default $procname $varg defarg] {
  36.                 lappend nargs [list $varg $defarg]
  37.             } else {
  38.                 lappend nargs $varg
  39.             }
  40.         }
  41.         append out "proc $procname [list $nargs] \{[info body $procname]\}\n"
  42.     }
  43.     return $out
  44. }
  45.